package sailhero

import "github.com/wsw188440873/ctrl-cali/types"

// indicationError 计算示值误差
//{
//	"avg": {
//	"2": [24, 59, 53],
//	"3": [57, 21, 89],
//	"4": [99, 0, 5]
//	},
//	"value": -40.955555555555556,
//}
func indicationError(modelId string, params map[string]interface{}) (float64, bool) {
	if _, ok := params["collect_data"]; !ok {
		return 0, false
	}
	if _, ok := types.Range[modelId]; !ok {
		return 0, false
	}
	avgMap := params["collect_data"].(map[string][]float64)
	avgMapLen := len(avgMap)
	sum := float64(0)
	// 计算每次采集的平均值.
	for _, values := range avgMap {
		valueLen := len(values)
		valueSum := float64(0)
		for _, v := range values {
			valueSum += v
		}
		sum += valueSum / float64(valueLen)
	}
	// 计算总平均值
	avg := sum / float64(avgMapLen)
	// 待测分析仪器满量程值
	r := types.Range[modelId]
	// 体浓度标称值
	nominal := r * types.IndicationErrorRange

	le := (avg - nominal) / r
	return le * 100, true
}
